import dayjs from 'dayjs';
import type { ConfigType } from 'dayjs';
import { useMemo } from 'react';

/**
 * 首字母大写
 * @param keyword 需要转化的单词
 * @returns
 */
export function firstToUpperCase(keyword: string) {
	return keyword.slice(0, 1).toUpperCase() + keyword.slice(1);
}

/**
 * 判断是否是一个纯粹的对象（排除数组）
 * @returns boolean
 */
export function isPureObject(obj: Record<PropertyKey, any>) {
	return typeof obj === 'object' && !Array.isArray(obj);
}

/**
 * @description 格式化为日期，时间补领
 * @param {ConfigType} date
 * @return {string} 格式化后的时间
 */
export function formatDateWithZero(date?: ConfigType): string {
	return dayjs(date).format('YYYY-MM-DD 00:00:00');
}

/**
 * 模拟延迟
 * @param time 时间，默认 2000ms
 */
export function mockDelay(time = 2000) {
	return new Promise((resolve) => {
		setTimeout(() => {
			resolve({});
		}, time);
	});
}

/**
 * 生成唯一值
 * @param length 生成唯一值的长度：默认5，最短3，最长11
 * @returns string
 */
export const useUID = (length = 8) => {
	return useMemo(
		() =>
			Math.random()
				.toString(36)
				.slice(-Math.max(3, Math.min(length, 11))),
		[]
	);
};
